/************************************
*  Copyright (C) 2010 Julien MOTTIN.
*  Contact: julien.mottin@gueydan.eu
*
*  This file is part of Gueydan.
*
*  Gueydan is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*
*  Gueydan is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with Gueydan.  If not, see <http://www.gnu.org/licenses/>.
*
*************************************/
#ifndef XMLDICO_H
#define XMLDICO_H

// QtCore
#include <QString>


// Common Strings
static const QString NAME("NAME");
static const QString VERSION("VERSION");
static const QString AMOUNT("AMOUNT");
static const QString TYPE("TYPE");
static const QString USE("USE");
static const QString NOTES("NOTES");
static const QString TIME("TIME");
static const QString PH("PH");

// HOP elements
static const QString HOP("HOP");
#define HOP_NAME NAME
#define HOP_VERSION VERSION
static const QString HOP_ALPHA("ALPHA");
#define HOP_AMOUNT AMOUNT
#define HOP_USE USE
#define HOP_TIME TIME
#define HOP_NOTES NOTES
#define HOP_TYPE TYPE
static const QString HOP_FORM("FORM");
static const QString HOP_BETA("BETA");
static const QString HOP_HSI("HSI");
static const QString HOP_ORIGIN("ORIGIN");
static const QString HOP_SUBSTITUTES("SUBSTITUTES");
static const QString HOP_HUMULENE("HUMULENE");
static const QString HOP_CARYOPHYLLENE("CARYOPHYLLENE");
static const QString HOP_COHUMULONE("COHUMULONE");
static const QString HOP_MYRCENE("MYRCENE");

// HOP Text
static const QString HOP_USE_BOIL("Boil");
static const QString HOP_USE_DRYHOP("Dry Hop");
static const QString HOP_USE_MASH("Mash");
static const QString HOP_USE_FIRSTWORT("First Wort");
static const QString HOP_USE_AROMA("Aroma");
static const QString HOP_TYPE_BITTERING("Bittering");
static const QString HOP_TYPE_AROMA("Aroma");
static const QString HOP_TYPE_BOTH("Both");
static const QString HOP_FORM_PELLET("Pellet");
static const QString HOP_FORM_PLUG("Plug");
static const QString HOP_FORM_LEAF("Leaf");

// FERMENTABLE elements
static const QString FERMENTABLE("FERMENTABLE");
#define FERM_NAME NAME
#define FERM_VERSION VERSION
#define FERM_TYPE TYPE
#define FERM_AMOUNT AMOUNT
static const QString FERM_YIELD("YIELD");
static const QString FERM_COLOR("COLOR");
static const QString FERM_ADDAFTERBOIL("ADD_AFTER_BOIL");
static const QString FERM_ORIGIN("ORIGIN");
static const QString FERM_SUPPLIER("SUPPLIER");
#define FERM_NOTES NOTES
static const QString FERM_COARSEFINEDIFF("COARSE_FINE_DIFF");
static const QString FERM_MOISTURE("MOISTURE");
static const QString FERM_DIASTATICPOWER("DIASTATIC_POWER");
static const QString FERM_PROTEIN("PROTEIN");
static const QString FERM_MAXINBATCH("MAX_IN_BATCH");
static const QString FERM_RECOMMENDMASH("RECOMMEND_MASH");
static const QString FERM_IBUGALPERLB("IBU_GAL_PER_LB");

// Fermentable text
static const QString FERM_TYPE_GRAIN("Grain");
static const QString FERM_TYPE_SUGAR("Sugar");
static const QString FERM_TYPE_EXTRACT("Extract");
static const QString FERM_TYPE_DRYEXTRACT("Dry Extract");
static const QString FERM_TYPE_ADJUNCT("Adjunct");

// Yeast Elements
static const QString YEAST("YEAST");
#define YEAST_NAME NAME
#define YEAST_VERSION VERSION
#define YEAST_TYPE TYPE
static const QString YEAST_FORM("FORM");
#define YEAST_AMOUNT AMOUNT
static const QString YEAST_AMOUNTISWEIGHT("AMOUNT_IS_WEIGHT");
static const QString YEAST_LABORATORY("LABORATORY");
static const QString YEAST_PRODUCTID("PRODUCT_ID");
static const QString YEAST_MINTEMP("MIN_TEMPERATURE");
static const QString YEAST_MAXTEMP("MAX_TEMPERATURE");
static const QString YEAST_FLOCCULATION("FLOCCULATION");
static const QString YEAST_ATTENUATION("ATTENUATION");
#define YEAST_NOTES NOTES
static const QString YEAST_BESTFOR("BEST_FOR");
static const QString YEAST_TIMESCULTURED("TIMES_CULTURED");
static const QString YEAST_MAXREUSE("MAX_REUSE");
static const QString YEAST_ADDTOSECONDARY("ADD_TO_SECONDARY");

// Yeast text
static const QString YEAST_TYPE_ALE("Ale");
static const QString YEAST_TYPE_LAGER("Lager");
static const QString YEAST_TYPE_WHEAT("Wheat");
static const QString YEAST_TYPE_WINE("Wine");
static const QString YEAST_TYPE_CHAMPAGNE("Champagne");
static const QString YEAST_FORM_LIQUID("Liquid");
static const QString YEAST_FORM_DRY("Dry");
static const QString YEAST_FORM_SLANT("Slant");
static const QString YEAST_FORM_CULTURE("Culture");
static const QString YEAST_FLOC_LOW("Low");
static const QString YEAST_FLOC_MEDIUM("Medium");
static const QString YEAST_FLOC_HIGH("High");
static const QString YEAST_FLOC_VERYHIGH("Very High");

// Misc elements
static const QString MISC("MISC");
#define MISC_NAME NAME
#define MISC_VERSION VERSION
#define MISC_TYPE TYPE
#define MISC_USE USE
#define MISC_TIME TIME
#define MISC_AMOUNT AMOUNT
static const QString MISC_AMOUNTISWEIGHT("AMOUNT_IS_WEIGHT");
static const QString MISC_USEFOR("USE_FOR");
#define MISC_NOTES NOTES

// Misc text
static const QString MISC_TYPE_SPICE("Spice");
static const QString MISC_TYPE_FINING("Fining");
static const QString MISC_TYPE_WATERAGENT("Water Agent");
static const QString MISC_TYPE_HERB("Herb");
static const QString MISC_TYPE_FLAVOR("Flavor");
static const QString MISC_TYPE_OTHER("Other");
static const QString MISC_USE_BOIL("Boil");
static const QString MISC_USE_MASH("Mash");
static const QString MISC_USE_PRIMARY("Primary");
static const QString MISC_USE_SECONDARY("Secondary");
static const QString MISC_USE_BOTTLING("Bottling");

// Water Elements
static const QString WATER("WATER");
#define WATER_NAME NAME
#define WATER_VERSION VERSION
#define WATER_AMOUNT AMOUNT
static const QString WATER_CALCIUM("CALCIUM");
static const QString WATER_BICARBONATE("BICARBONATE");
static const QString WATER_SULFATE("SULFATE");
static const QString WATER_CHLORIDE("CHLORIDE");
static const QString WATER_SODIUM("SODIUM");
static const QString WATER_MAGNESIUM("MAGNESIUM");
#define WATER_PH PH
#define WATER_NOTES NOTES

// MashStep Elements
static const QString MASHSTEP("MASH_STEP");
#define MASHSTEP_NAME NAME
#define MASHSTEP_VERSION VERSION
#define MASHSTEP_TYPE TYPE
static const QString MASHSTEP_INFUSEAMOUNT("INFUSE_AMOUNT");
static const QString MASHSTEP_TEMP("STEP_TEMP");
static const QString MASHSTEP_TIME("STEP_TIME");
static const QString MASHSTEP_RAMPTIME("RAMP_TIME");
static const QString MASHSTEP_ENDTEMP("END_TEMP");

// MashStep Text
static const QString MASHSTEP_TYPE_INFUSION("Infusion");
static const QString MASHSTEP_TYPE_TEMP("Temperature");
static const QString MASHSTEP_TYPE_DECOCTION("Decoction");

// Mash Element
static const QString MASH("MASH");
#define MASH_NAME NAME
#define MASH_VERSION VERSION
static const QString MASH_GRAINTEMP("GRAIN_TEMP");
static const QString MASH_STEPS("MASH_STEPS");
#define MASH_NOTES NOTES
static const QString MASH_TUNTEMP("TUN_TEMP");
static const QString MASH_SPARGETEMP("SPARGE_TEMP");
#define MASH_PH PH
static const QString MASH_TUNWEIGHT("TUN_WEIGHT");
static const QString MASH_TUNSPECIFICHEAT("TUN_SPECIFIC_HEAT");
static const QString MASH_EQUIPADJUST("EQUIP_ADJUST");

// Style Element
static const QString STYLE("STYLE");
#define STYLE_NAME NAME
#define STYLE_VERSION VERSION
static const QString STYLE_CATEGORY("CATEGORY");
static const QString STYLE_CATNUM("CATEGORY_NUMBER");
static const QString STYLE_LETTER("STYLE_LETTER");
static const QString STYLE_GUIDE("STYLE_GUIDE");
static const QString STYLE_TYPE("TYPE");
static const QString STYLE_OGMIN("OG_MIN");
static const QString STYLE_OGMAX("OG_MAX");
static const QString STYLE_FGMIN("FG_MIN");
static const QString STYLE_FGMAX("FG_MAX");
static const QString STYLE_IBUMIN("IBU_MIN");
static const QString STYLE_IBUMAX("IBU_MAX");
static const QString STYLE_COLORMIN("COLOR_MIN");
static const QString STYLE_COLORMAX("COLOR_MAX");
static const QString STYLE_ABVMIN("ABV_MIN");
static const QString STYLE_ABVMAX("ABV_MAX");
#define STYLE_NOTES NOTES
static const QString STYLE_EXAMPLES("EXAMPLES");

// Style text
static const QString STYLE_TYPE_LAGER("Lager");
static const QString STYLE_TYPE_ALE("Ale");
static const QString STYLE_TYPE_WHEAT("Wheat");
static const QString STYLE_TYPE_MEAD("Mead");
static const QString STYLE_TYPE_MIXED("Mixed");
static const QString STYLE_TYPE_CIDER("Cider");


// Recipe Element
static const QString RECIPE("RECIPE");
#define RECIPE_NAME NAME
#define RECIPE_VERSION VERSION
#define RECIPE_STYLE STYLE
static const QString RECIPE_TYPE("TYPE");
static const QString RECIPE_EQUIPMENT("EQUIPMENT");
static const QString RECIPE_BREWER("BREWER");
static const QString RECIPE_ASSTBREWER("ASST_BREWER");
static const QString RECIPE_BATCHSIZE("BATCH_SIZE");
static const QString RECIPE_BOILSIZE("BOIL_SIZE");
static const QString RECIPE_BOILTIME("BOIL_TIME");
static const QString RECIPE_EFFICIENCY("EFFICIENCY");
static const QString RECIPE_HOPS("HOPS");
static const QString RECIPE_FERMENTABLES("FERMENTABLES");
static const QString RECIPE_MISCS("MISCS");
static const QString RECIPE_YEASTS("YEASTS");
static const QString RECIPE_WATERS("WATERS");
#define RECIPE_MASH MASH
#define RECIPE_NOTES NOTES
static const QString RECIPE_TASTENOTES("TASTE_NOTES");
static const QString RECIPE_TASTERATING("TASTE_RATING");
static const QString RECIPE_OG("OG");
static const QString RECIPE_FG("FG");
static const QString RECIPE_FERMSTAGES("FERMENTATION_STAGES");
static const QString RECIPE_PRIMAGE("PRIMARY_AGE");
static const QString RECIPE_PRIMTEMP("PRIMARY_TEMP");
static const QString RECIPE_SECONDAGE("SECONDARY_AGE");
static const QString RECIPE_SECONDTEMP("SECONDARY_TEMP");
static const QString RECIPE_TERTAGE("TERTIARY_AGE");
static const QString RECIPE_TERTTEMP("TERTIARY_TEMP");
static const QString RECIPE_AGE("AGE");
static const QString RECIPE_AGETEMP("AGE_TEMP");
static const QString RECIPE_DATE("DATE");
static const QString RECIPE_PRIMSUGARNAME("PRIMING_SUGAR_NAME");
static const QString RECIPE_PRIMSUGAREQUIV("PRIMING_SUGAR_EQUIV");

// Recipe items
static const QString RECIPE_TYPE_EXTRACT("Extract");
static const QString RECIPE_TYPE_PARTIALMASH("Partial Mash");
static const QString RECIPE_TYPE_ALLGRAIN("All Grain");


#endif // XMLDICO_H
